XML (Extensible Markup Language) is rapidly becoming a widely-used enterprise application technology. The value of binding meta-data to instance data in an extensible character-based format has been recognized as the way to interoperate across platforms, operating systems, and the Internet. The introduction of XML Schema to the family of XML standards promised to bring data type support, thereby making XML even more valuable for business data and application integration. However, XML is an abstraction, so the price for its interoperability has been in increased processing time and resources. This becomes especially acute in an enterprise-level transaction-based application that depends on validating the input XML as well as performing transformations and additional workflow.
To date, standards-based approaches to validating and performing additional work with XML data have required multiple processing steps in which metadata is materialized for each step. Materializing metadata typically entails parsing the metadata and forming it into a structure or object through which you have access to the metadata in relation to the associated data, for further processing, such as for validation and transformation of the data. In most cases, such approaches eliminate the use of streaming or, if streaming is supported, limit the functionality of the streaming process. “Streaming” refers to techniques for transferring data such that the data can be processed as a steady and continuous stream.
For example, when an XML purchase order is validated against its associated schema, the validation operation requires materialization of metadata. Further, when the XML data needs to be processed to match a receiving application or database schema, for example, by applying XSLT (Extensible Stylesheet Language Transformation) stylesheets, an XSLT processor requires a resource-intensive DOM (Document Object Model) be built, which requires a second materialization of the metadata. In addition to the additional resource costs associated with such a two-step process, the stream-based functionality is eliminated.
Based on the foregoing, there is a general need for a technique for streaming validation-based XML processing directions.